Embodiments of the present invention relate generally to the field of data communication using parallel access data streams, and more particularly to parallel access data stream communication in distributed shared memory systems having variable latency.
A CPU (central processing unit) cache is a cache used by a computer CPU to reduce the average time to access data from main memory. A cache is memory, smaller and faster than main memory, which stores copies of data from frequently used main memory locations. A cache is often organized as a hierarchy of cache levels such as L1 (level 1), L2, L3 and so on. When the CPU needs to access a location in main memory, it first checks whether a copy of that data is in the cache. If so, the processor reads from or writes to the cache, which is faster than reading from or writing to main memory.
Each cache holding data associated with a location in main memory presents a potential data coherency problem. For example, the relevant data in main memory may be changed by other entities (for example, by peripherals using DMA (direct memory access) or by any of the various cores in a multi-core processor), in which case the copy in the cache(s) may become stale (out-of-date). Alternatively, when a CPU in a multiprocessor system updates data in its cache, copies of that data in caches associated with other CPUs become stale.